package com.projles;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnKeyListener;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class RegistraRecordActivity extends Activity implements OnClickListener{

	private Button btSalvar;
	private Button btCancelar;
	private EditText campoNome;
	private int idadeAtingida;
	
	List<String> nomes = new ArrayList<String>();
	List<Integer> idades = new ArrayList<Integer>();
	
	private SharedPreferences config;
	public static final String RECORDES = "recordes";
	SharedPreferences.Editor editor;
	
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.registra_record);
		
		Bundle params = getIntent().getExtras();
    	
    	idadeAtingida =  (Integer) params.get("novo_record");
		
    	config = getSharedPreferences(RECORDES, 0);
    	editor = config.edit();
		
		povoaListaRecordes();
		
		btSalvar = (Button) findViewById(R.id.bt_salvar_record);
		btSalvar.setOnClickListener(this);      
		
		btCancelar = (Button) findViewById(R.id.bt_cancelar_record);
		btCancelar.setOnClickListener(this);
		
		campoNome = (EditText) findViewById(R.id.txt_nome_record);
		
		campoNome.setOnKeyListener(new OnKeyListener() {
        	@Override
        	public boolean onKey(View v, int keyCode, KeyEvent event) {

        		if ((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)) {

                	if (campoNome.getText().length() == 0) {
                		return false;
                	}
                	
                	esconderTeclado();
                	return true;
                }
                return false;
        	}
    	});
		
	}
	
	private void esconderTeclado() {
		InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
		imm.hideSoftInputFromWindow(campoNome.getWindowToken(), 0);
	}
	
	private void povoaListaRecordes() {
		
		nomes.add(config.getString("nome_um", "-"));
		idades.add(config.getInt("idade_um", Integer.MAX_VALUE));
		
		nomes.add(config.getString("nome_dois", "-"));
		idades.add(config.getInt("idade_dois", Integer.MAX_VALUE));
		
		nomes.add(config.getString("nome_tres", "-"));
		idades.add(config.getInt("idade_tres", Integer.MAX_VALUE));
		
		nomes.add(config.getString("nome_quatro", "-"));
		idades.add(config.getInt("idade_quatro", Integer.MAX_VALUE));
		
		nomes.add(config.getString("nome_cinco", "-"));
		idades.add(config.getInt("idade_cinco", Integer.MAX_VALUE));
	}

	@Override
	public void onClick(View v) {
		
		switch (v.getId()) {
		case R.id.bt_cancelar_record:
			finish();
			break;
			
		case R.id.bt_salvar_record:
			salvar();
			break;
		}
		
	}

	private void salvar() {
		
		boolean erro = false;
		
		if (campoNome.length() == 0) {
			toast(getResources().getString(R.string.campo_vazio));
			erro = true;
		}
		
		
		int index = jahExiste(campoNome.getText().toString().trim());
		
		if (index != -1) {
			
			if (idades.get(index) < idadeAtingida) {
				toast(getResources().getString(R.string.nome_repetido));
				erro = true;
			}
			else {
				nomes.remove(index);
				idades.remove(index);
			}
			
		}
		

		if (!erro) {
			inserirRecorde(campoNome.getText().toString().trim(), idadeAtingida);
			gravaRecordes();
			
			toast(getResources().getString(R.string.recorde_salvo));
			
			finish();
			
		}
		
	}
	
	private void gravaRecordes() {
		
		editor.putString("nome_um", nomes.get(0));
		editor.putInt("idade_um", idades.get(0));
		
		editor.putString("nome_dois", nomes.get(1));
		editor.putInt("idade_dois", idades.get(1));
		
		editor.putString("nome_tres", nomes.get(2));
		editor.putInt("idade_tres", idades.get(2));
		
		editor.putString("nome_quatro", nomes.get(3));
		editor.putInt("idade_quatro", idades.get(3));
		
		editor.putString("nome_cinco", nomes.get(4));
		editor.putInt("idade_cinco", idades.get(4));
		
		editor.commit();		
	}

	private void inserirRecorde(String nome, int idade) {

		for (int i = 0; i < 5; i++) {
			
			if (idade <= idades.get(i)) {
				nomes.add(i, nome);
				idades.add(i, idade);
				break;
			}
		}
		
	}

	private int jahExiste(String nome) {
		
		for (int i = 0; i < 5; i++) {
			if (nome.equals(nomes.get(i))) {
				return i;
			}
		}
		return -1;
	}

	private void toast(String texto) {
		Toast.makeText(this, texto, Toast.LENGTH_LONG).show();
	}
	
}
